// 此文件是核心入口
// 需要导出一个继承自Yeoman Generator的类型
// Yeoman Generator在工作时会自动调用在这里定义的一些生命周期方法
// 在这些方法中可以调用父类提供的一些工具方法实现一些功能,比如文件写入

const Generator = require('yeoman-generator')

module.exports = class extends Generator {
  prompting() {
    return this.prompt([
      {
        type: 'input',
        name: 'name',
        message: 'Your project name',
        // 默认是项目目录名称
        default: this.appname,
      },
    ]).then(res => {
      this.answers = res
    })
  }
  //  在生成文件阶段会调用这个方法写入文件
  writing() {
    // 写入文件到目标
    // this.fs.write(this.destinationPath('temp.txt'), Math.random().toString())
    // 通过模板方式写入文件
    // 模板文件路径
    const tmpl = this.templatePath('foo.txt')
    // 输出模板路径
    const output = this.destinationPath('foo.txt')
    // 模板数据上下文 this.answers来自于prompting
    const ctx = this.answers

    this.fs.copyTpl(tmpl, output, ctx)
  }
}
